home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1997 August / Walnut Creek CDROM.7z / VOL_400 / 446_01 / DOC / DPBASICS / ODE / CREATE.C < prev    next >
Encoding:
C/C++ Source or Header  |  1996-04-18  |  966 b   |  42 lines

  1. #include <create.h>
  2. #include <ode.h>
  3.  
  4. static const char* subclass_table_ODESolver[] =
  5. {
  6.   "ForwadEulerODE",
  7.   "RungeKutta4ODE",
  8.   NULL
  9. };
  10. const char** hierODESolver () { return subclass_table_ODESolver; }
  11.  
  12. static const char* subclass_table_ODESolverUDC[] =
  13. {
  14.   "Oscillator",
  15.   NULL
  16. };
  17. const char** hierODESolverUDC () { return subclass_table_ODESolverUDC; }
  18.  
  19. ODESolver* createODESolver (const prm(ODESolver)& pm)
  20. {
  21.   ODESolver* ptr = NULL;
  22.   if (EQ(pm.method,ForwardEulerODE))
  23.     ptr = new ForwardEulerODE (*pm.f);
  24.   else if (EQ(pm.method,RungeKutta4ODE))
  25.     ptr = new RungeKutta4ODE (*pm.f);
  26.   else
  27.     errorFP("createODESolver","Cannot make object of class %s",
  28.         pm.method.chars());
  29.   return ptr;
  30. }
  31.  
  32. ODESolverUDC* createODESolverUDC (const String& problem)
  33. {
  34.   ODESolverUDC* ptr = NULL;
  35.   if (EQ(problem,Oscillator))
  36.     ptr = new Oscillator();
  37.   else
  38.     errorFP("createODESolverUDC","Cannot make object of class %s",
  39.         problem.chars());
  40.   return ptr;
  41. }
  42.